﻿using PersistenceLayer.DAL;
using PersistenceLayer.Model;
using SupportLayer.Enums;
using SupportLayer.Objetos.Outros;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Util.ExtensionMethods;

namespace ByBikeShop.Site.Pages
{
	public partial class Contato : BasePage
	{
		Administracao.UCs.Mensagem.mensagens ucMensagem;

		protected void Page_Load(object sender, EventArgs e)
		{
			try
			{
				base.PageLoad();
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;

				if (ex.Message.Contains("shadow copy"))
					Response.Redirect(Request.RawUrl);

				else if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						ucMensagem.Mensagem = ex.InnerException.InnerException.Message;
					else
						ucMensagem.Mensagem = ex.InnerException.Message;
				else
					ucMensagem.Mensagem = ex.Message;

				placeMensagem.Controls.Add(ucMensagem);
			}
		}

		public override void CarregaDados()
		{
		}

		protected void btnEnviar_Click(object sender, EventArgs e)
		{
			try
			{
				if (txtNome.Text.Equals(string.Empty))
					throw new ApplicationException("O campo Nome deve ser preenchido");
				if (txtEmail.Text.Equals(string.Empty))
					throw new ApplicationException("O campo E-mail deve ser preenchido");
				if (txtTelefone.Text.Equals(string.Empty))
					throw new ApplicationException("O campo Telefone deve ser preenchido");
				if (txtAssunto.Text.Equals(string.Empty))
					throw new ApplicationException("O campo Assunto deve ser preenchido");
				if (txtMensagem.Text.Equals(string.Empty))
					throw new ApplicationException("O campo Mensagem deve ser preenchido");

				if (!txtEmail.Text.isValidEmail())
					throw new ApplicationException("Digite um e-mail válido!");

				PersistenceLayer.Model.Contato c = new PersistenceLayer.Model.Contato();
				c.Assunto = txtAssunto.Text;
				c.Email = txtEmail.Text;
				c.IP = Util.IP.GetIP(Request);
				c.Mensagem = txtMensagem.Text;
				c.Nome = txtNome.Text;
				c.Telefone = txtTelefone.Text;

				new ContatoDAL().Adicionar(c);

				txtNome.Text = "";
				txtEmail.Text = "";
				txtTelefone.Text = "";
				txtAssunto.Text = "";
				txtMensagem.Text = "";


				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Sucesso;

				ucMensagem.Mensagem = "Sua mensagem foi enviada com sucesso! Obrigado!";

				placeMensagem.Controls.Add(ucMensagem);
			}
			catch (Exception ex)
			{
				ucMensagem = (Administracao.UCs.Mensagem.mensagens)LoadControl(ResolveUrl("/Administracao/UCs/Mensagem/mensagens.ascx"));
				ucMensagem.TipoMensagem = TiposMensagens.Erro;

				if (ex.Message.Contains("shadow copy"))
					Response.Redirect(Request.RawUrl);

				else if (ex.Message.Contains("inner exception"))
					if (ex.InnerException.Message.Contains("inner exception"))
						ucMensagem.Mensagem = ex.InnerException.InnerException.Message;
					else
						ucMensagem.Mensagem = ex.InnerException.Message;
				else
					ucMensagem.Mensagem = ex.Message;

				placeMensagem.Controls.Add(ucMensagem);
			}
		}
	}
}